package com.smile.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smile.data.dto.ProductItemCreateDto;
import com.smile.data.dto.ProductItemQueryDto
import com.smile.data.dto.ProductItemUpdateDto;
import com.smile.data.entity.ProductItemEntity;
import com.smile.mapper.ProductItemMapper;
import com.smile.response.ResultEmpty
import com.smile.response.ResultPage
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
class ProductItemService {

    @Autowired
    lateinit var mapper: ProductItemMapper

     fun query(dto: ProductItemQueryDto): ResultPage<ProductItemEntity>{
        var page = Page<ProductItemEntity>(dto.page, dto.size);
        var query = QueryWrapper<ProductItemEntity>();
        query.allEq(
            mapOf(
                "status" to dto.status,
                "menu" to dto.menu
            ), false
        )
            .and(!dto.keywords.isNullOrEmpty()) {
                it.like("title", dto.keywords)
            };
       return mapper.selectPage(page, query).run { ResultPage(page) }
    }
     fun queryById(id: String) : ProductItemEntity {
        return mapper.selectById(id);
    }
     fun  create(dto : ProductItemEntity) :ResultEmpty{
       return mapper.insert(dto).run { ResultEmpty() }
    }

     fun update(id :String, dto: ProductItemEntity) : ResultEmpty{
         dto.id = id;
        return mapper.updateById(dto).run { ResultEmpty() }
    }

     fun remove(id: String) : ResultEmpty{
        return mapper.deleteById(id).run { ResultEmpty()}
    }
}
